//===============================================================================
// Microsoft patterns & practices Enterprise Library Contribution
// Mapping Application Block
//===============================================================================

using System;
using System.ComponentModel;
using Microsoft.Practices.EnterpriseLibrary.Configuration.Design;
using Microsoft.Practices.EnterpriseLibrary.Configuration.Design.Validation;
using EntLibContrib.Common.Configuration.Design;

namespace EntLibContrib.Mapping.Configuration.Design
{
  /// <summary>
	/// Represents a <see cref="MapData"/> configuration element. This class is abstract.
  /// </summary>
	[Image(typeof(MapBaseNode))]
	[SelectedImage(typeof(MapBaseNode))]
  public abstract class MapBaseNode : NameSortConfigurationNode
	{
		#region Properties
		/// <summary>
		/// Gets the <see cref="MapData"/> this node represents.
		/// </summary>
		/// <value>
		/// The <see cref="MapData"/> this node represents.
		/// </value>
		[Browsable(false)]
		public abstract MapData MapData
		{
			get;
		}
		#endregion

		#region Construction
		/// <summary>
		/// Initialize a new instance of the <see cref="MapBaseNode"/> class.
		/// </summary>
		protected MapBaseNode()
    {
		}
		#endregion

		#region Public Methods
		/// <summary>
		/// Clones this instance.
		/// </summary>
		/// <returns></returns>
		public abstract MapBaseNode Clone();
		#endregion
	}
}